﻿using System.Collections.Generic;
using Neturion.Dados;
using Neturion.IRepositorios;
using Neturion.Repositorios;
using Neturion.Utils;

namespace Neturion.Negocios
{
    /// <summary>
    /// 
    /// </summary>
    public class NegocioTipoLogradouro
    {
        private IRepositorioTipoLogradouro _repositorioTipoLogradouro;

        /// <summary>
        /// 
        /// </summary>
        public NegocioTipoLogradouro()
        {
            _repositorioTipoLogradouro = new RepositorioTipoLogradouro();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoLogradouro"></param>
        /// <returns></returns>
        public TipoLogradouro Inserir(TipoLogradouro tipoLogradouro)
        {
            tipoLogradouro.Codigo = GeradorCodigo.GerarCodigo(1);
            tipoLogradouro.Codigo += (_repositorioTipoLogradouro.ObterUltimoIdCodigoInteiro() + 1).ToString();
            tipoLogradouro.Codigo += GeradorCodigo.GerarCodigo(1, tipoLogradouro.Codigo);
            return _repositorioTipoLogradouro.Inserir(tipoLogradouro);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoLogradouro"></param>
        /// <returns></returns>
        public TipoLogradouro Atualizar(TipoLogradouro tipoLogradouro)
        {
            return _repositorioTipoLogradouro.Atualizar(tipoLogradouro);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="tipoLogradouro"></param>
        public void Excluir(TipoLogradouro tipoLogradouro)
        {
            TipoLogradouro tipoLogradouroTmp = ObterPorId(tipoLogradouro.TipoLogradouroId);
            _repositorioTipoLogradouro.Excluir(tipoLogradouroTmp);
        }

        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
        public IList<TipoLogradouro> ObterTodos()
        {
            return _repositorioTipoLogradouro.ObterTodos();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public TipoLogradouro ObterPorId(int id)
        {
            return _repositorioTipoLogradouro.ObterPorId(id);
        }

        public TipoLogradouro ObterPorCodigo(string codigo, Usuario usuarioPermissao)
        {
            return _repositorioTipoLogradouro.ObterPorCodigo(codigo);
        }
    }
}